我想大家都用過蝦皮吧,那在 Python 裡面訂單會怎麼樣記錄在蝦皮那邊呢? 我們將先學習 字典 (dictionary) 再搭上之前所學,來展示一個最簡易的訂單模擬。
文章重點
字典表示如下,使用 { 和 } 將 鍵 (key) 和 值 (value) 的多個對應配對建置,
d = {a: 3, b: 4, k: ”v”}
Variable = {key0: value0, key1: value1}
變數 = {鍵a: 值a, 鍵b: 值b}
拿到 d 字典後,翻開便籤 a 的頁面,會得到值 整數 3,也就是 d[a] 結果是 3,翻開便籤 k 的頁面,會得到 字串 “v”
d = {a: 3, b: 4, k: ”v”}
d[key] = value 替會 d 字典裡,key 對應到的 value,所以舉個例子,d[a] = 1,此時會拿起 d 字典,並翻開 a 便籤的頁面,將 整數 1 填入取代,所以 d 變成 {a: 1, b: 4, k: ”v”},這邊可以注意到
d[t] = [1, 2],如果 key 不在原來的 d 字典內呢? 很簡單,就會在多創造一頁由 t 便籤指引到的,並在對應頁面填上 串列 [1, 2],所以 d 變成 {a: 3, b: 4, k: ”v”, t: [1, 2]}
字典的常用方法,較易搞混的
d.keys() 會將 d 字典的 key 全部羅列出來
d.values() 會將 d 字典的 values 全部羅列出來
d.items() 會將 d 字典的 (key, values) 的配對全部羅列出來
至於常看到的 update, pop, get, clear 我想大家一定知道是什麼了
終於終於,學了一堆東西,終於可以看到比較跟 Odoo 相關的例子了,來看看我想帶給各位的指令吧。
這邊是我下的指令
電商裡面有非常多訂單,用訂單號為唯一編碼,用裡 串列 條列,並且訂單編號是一個 字典 紀錄訂單的各個內容,請幫我舉出這個例子
結果整理如下
# 訂單列表,包含多個訂單,每個訂單都是一個字典
# 訂單號 order_id 是每個訂單的唯一識別碼,可以用來查詢和管理訂單。
# 客戶 customer 是下訂單的公司或人員。
# 產品 products 是一個列表,包含該訂單中的所有產品,每個產品都有其編號、名稱、數量和價格。
# 總金額 total 是計算出的訂單總額。
# 訂單狀態 status 可以記錄訂單是否已發貨、正在處理中等。
orders = [
{
"order_id": "ORD001",
"customer": "公司A",
"products": [
{"product_id": "P001", "name": "產品1", "quantity": 2, "price": 100},
{"product_id": "P002", "name": "產品2", "quantity": 1, "price": 200}
],
"total": 400,
"status": "已發貨"
},
{
"order_id": "ORD002",
"customer": "公司B",
"products": [
{"product_id": "P003", "name": "產品3", "quantity": 3, "price": 150},
{"product_id": "P004", "name": "產品4", "quantity": 2, "price": 300}
],
"total": 1050,
"status": "處理中"
}
]
order 這個變數是什麼型態呢? 是 串列 (list) ,看到開頭跟結尾是 [ 和 ]
order = [ od0, od1 ]
再來很清楚 od0 是 字典 (dictionary),並且這張訂單含有豐富的訊息在裏頭,產品 ID、客戶、商品 … 確實都是電商訂單該有的
od0 = {
"order_id": "ORD001",
"customer": "公司A",
"products": [
{"product_id": "P001", "name": "產品1", "quantity": 2, "price": 100},
{"product_id": "P002", "name": "產品2", "quantity": 1, "price": 200}
],
"total": 400,
"status": "已發貨"
}
我們沒有學過之前下的可能像這樣
電商裡面有非常多訂單,用訂單號為唯一編碼,紀錄訂單的各個內容,請幫我舉出這個例子
會發現少了很多型態的指定,那會出現什麼問題呢?
當遇到要記有系統或 API,你的程式就不能僅僅是將功能給敘述而已了,你勢必要符合整合或串接系統的規範,而規範什麼的,其實很多跟對方給你的資料有關,所以跟 GenAI 精確指出資料的型態,是必要且不可少的一步。
注意當前 GenAI 的限制
1, 2 有很大的可能是因為給了太多不必要的資訊,所以切分必要資訊,並加入適當指令,是符合串接系統的最佳策略,而 3 如果 GenAI 也無法解的話,那只能回歸老本行,自己要來看錯誤了。
所以在我看來,學習這些知識是必要的,而且在現在這個世代 知道 反而是最重要的,你熟不熟練其實還好,你能清楚地把要做的事情表述給 GenAI 才是最重要的,但要是你不知道這些技術名詞,那你也只能祈求 GenAI 生成出你想要的了。